#ifndef __KEYNUMBERCONTROL_H__
#define __KEYNUMBERCONTROL_H__
#include<vector>
#include<map>
#include<string>
#include "PublicData.h"

class KeyNumberControl
{
private:

	//连接文件路径
	std::string m_KeySNConfigFilePath;

	//是否加载
	bool m_IsLoad;


	/*@brief 帮点keysn到module
	 *@param int 接收到的按键编号
	 *@param KeyData  局部keySNData
	 **************************************/
	std::map<int, KeyData*> m_KeySNConfigTable;

	/*@brief 
	*@param int msgID
	*@param KeyData  局部keySNData
	**************************************/
	std::map<int, int> m_MsgIDToKeySNMap;
	
public:
	KeyNumberControl();
	~KeyNumberControl();

	/************************************
	*@brief 获取keySN，module按键关联信息
	*@param 全局按键编号
	*************************************/
	KeyData* getKeyNumber(int keySN);

	/************************************
	*@brief 加载连接文件
	*@note 读取KeySN配置文件信息
	*@param filePath KeySN配置文件路径
	*@return 是否加载成功
	*************************************/
	bool loadKeySNConfigFile(const std::string &filePath);

	/************************************
	*@brief 初始化
	*************************************/
	bool initialization();

	/************************************
	*@brief 加载KeySNConfigTable文件信息是否成功
	*@return 是否加载成功
	*************************************/
	bool isLoad();

	/************************************
	*@brief 用过消息ID获取到界面名字等信息
	*@note 读取KeySN配置文件信息
	*@param filePath KeySN配置文件路径
	*@return 是否加载成功
	*************************************/
	KeyData* getFormatNameByMsgID(int msgID);
	

	/************************************
	*@brief 解析消息id
	*@note 根据消息id 修改数据 发送数据
	*@param msgID 按键编号
	*@return 0失败，其他成功
	*************************************/
	int analyzingMsgID(int msgID, char** destData, char** srcData);


	/************************************
	*@brief 解析消息id
	*@note 根据消息id 修改数据 发送数据
	*@param msgID 按键编号
	*@return 0失败，其他成功  
	*************************************/
	void setMap(std::string formatName, std::map<int, char*>& destMap);



};
#endif


